#include "widget.h"
#include "ui_widget.h"

// 自定义信号
// 在Qt内置信号中， 基本上已经覆盖到了大部分用户的操作
// 所以在现实开发中自定义信号的情况比较少

//所谓的 Qt的信号，本质上是一个"函数"
// 但是 信号是一类非常特殊的函数
// 这个函数的定义，在Qt编译过程是自动生成的(自定生成的过程，程序员无法干预)

// 作为信号函数 这个函数的返回值 必须是void ；有没有参数都可以，还可以支持重载

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    connect(this , &Widget::mySignal , this , &Widget::handleMySignal);
    // 当前只是 将自定义信号 于 自定义槽函数建立联系 ， 但是 这个信号还没发出

    // 发送信号emit , 发送信号的的操作不一定在构造函数中也可以在任意合适的代码中
    emit mySignal();

    connect(this , &Widget::mySignal_close , this , &Widget::close);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::handleMySignal()
{
    this->setWindowTitle("自定义信号：");
}

void Widget::on_pushButton_clicked()
{
    // 发送出自定义的信号
    // 发送信号emit , 发送信号的的操作不一定在构造函数中也可以在任意合适的代码中

    //此时 点击按钮 就是触发 发送信号的标识
    emit mySignal_close();
}

